import request from '@/utils/request'
import { USER_GROUPS } from '@/config'

// 认证相关API
const auth = {
  // 登录
  async login(data) {
    try {
      // 1. 调用登录接口
      const loginResult = await new Promise((resolve, reject) => {
        uni.request({
          url: request.baseURL + '/api/auth/login',
          method: 'POST',
          data,
          header: {
            'Content-Type': 'application/json'
          },
          success: (res) => {
            console.log('登录响应:', res)
            resolve(res)
          },
          fail: (err) => {
            console.error('登录请求失败:', err)
            reject(new Error('网络请求失败'))
          }
        })
      })
      
      // 2. 处理登录响应
      const response = loginResult.data
      console.log('处理后的响应数据:', response)
      
      if (!response || response.code !== 200) {
        throw new Error(response?.message || '登录失败')
      }
      
      const token = response.data
      if (!token) {
        throw new Error('登录失败：未获取到token')
      }
      
      // 3. 保存token
      uni.setStorageSync('token', token)
      
      // 4. 获取用户信息
      const userInfo = await request.get('/api/user/info')
      
      if (!userInfo) {
        throw new Error('获取用户信息失败')
      }
      
      // 5. 保存用户信息
      uni.setStorageSync('userInfo', JSON.stringify(userInfo))
      
      // 6. 返回登录结果
      return {
        token,
        userInfo
      }
    } catch (error) {
      // 发生错误时清除token和用户信息
      uni.removeStorageSync('token')
      uni.removeStorageSync('userInfo')
      throw error
    }
  },
  
  // 登出
  async logout() {
    try {
      await request.post('/api/auth/logout')
    } finally {
      uni.removeStorageSync('token')
      uni.removeStorageSync('userInfo')
      // 退出后跳转到登录页
      uni.reLaunch({
        url: '/pages/login/index'
      })
    }
  },
  
  // 获取用户信息
  async getUserInfo() {
    const token = uni.getStorageSync('token')
    if (!token) {
      throw new Error('未登录')
    }
    return request.get('/api/user/info')
  },
  
  // 注册
  register(data) {
    return request.post('/api/auth/register', data)
  }
}

export default auth 